home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / x11 / networke / civ-0.000 / civ-0 / civ-0.3 / src / graph.h < prev    next >
C/C++ Source or Header  |  1995-02-16  |  3KB  |  101 lines

  1. #ifndef _GRAPH_H
  2. #define _GRAPH_H
  3.  
  4. const int ScreenWidth = 320;
  5. const int ScreenHeight = 200;
  6.  
  7. #include "mytypes.h"
  8. #include "list.h"
  9.  
  10. // if the key isn't one of these, its an ordinary key
  11. enum { KEY_UPLEFT = 0x100, KEY_UP, KEY_UPRIGHT, KEY_LEFT, KEY_RIGHT,
  12.        KEY_DOWNLEFT, KEY_DOWN, KEY_DOWNRIGHT, NO_KEY };
  13.  
  14. enum { MOUSE_LEFT, MOUSE_RIGHT, KEYBOARD, SELECT, MESG_READ };
  15.  
  16. typedef void (*HandlerFunc)(int);
  17.  
  18. class MsgQ;
  19.  
  20. struct ReadHandler
  21. {
  22.   void (*func)(MsgQ *q, int fd, int info);
  23.   int fd, q;
  24.   int info;
  25. };
  26.  
  27. // defines a 320x200 graphics mode
  28. // wrapper
  29. // should setup graphics when constructed
  30. // and reset to text when destructed
  31. class Graphics
  32. {
  33. public:
  34.   Graphics(void (*keyPressed)(int, int, int, char *)) {
  35.     KeyPressed = keyPressed;
  36.   }
  37.   virtual ~Graphics() {}
  38.  
  39.   virtual int Width() { return 320; }
  40.   virtual int Height() { return 200; }
  41.  
  42.   virtual int AllocColor(char *name) = 0;
  43.  
  44.   virtual void Refresh() {}
  45.  
  46.   // displays a message somewhere on the screen
  47.   virtual void DisplayMessage(char *str, int color) = 0;
  48.  
  49.   // these functions should draw stuff on the map window
  50.  
  51.   virtual void WriteStr(int x, int y, char *str, int color) = 0;
  52.   virtual void WriteChar(int x, int y, int ch, int color) = 0;
  53.  
  54.   virtual void WriteInt(int x, int y, int n, int width, int color);
  55.  
  56.   virtual void Clear() = 0;
  57.  
  58.   virtual void FillRect(int x, int y, int width, int ht, int col) = 0;
  59.  
  60.   virtual void Rect(int x, int y, int width, int ht, int col) = 0;
  61.  
  62.   virtual void BitBlt(int sx, int sy, int w, int h, int dx, int dy) = 0;
  63.  
  64.   virtual long CompilePixmap(char **pixmap) = 0;
  65.  
  66.   virtual void FreePixmap(long handle) = 0;
  67.  
  68.   virtual void DrawPixmap(int xc, int yc, long handle) = 0;
  69.  
  70.   virtual void GetPixmapInfo(long handle, int &w, int &h) = 0;
  71.  
  72.   // this function starts up an event driven loop and calls the handler
  73.   // which you specified whenever some event occurs
  74.   // event's are either keypresses or data arriving on the socket
  75.   virtual int MainLoop() = 0; // will not return
  76.  
  77.   virtual void StartTimer(int which, int milli, HandlerFunc func) = 0;
  78.   virtual void StopTimer(int which) = 0;
  79.  
  80.   // add a notify handler for data available on a fd
  81.   virtual void AddReadNotify(int fd, void (*func)(MsgQ *, int, int),
  82.                  int info = 0, int q = 1) = 0;
  83.  
  84.   // displays a choice box, arranges to call the key pressed routine
  85.   // with the event choice box and a pointer to the string which was
  86.   // selected
  87.   virtual void CreateChoiceFrame(char *mesg, List<charp> choices) = 0;
  88.  
  89.   // pop up a message box, calls the key pressed routine with
  90.   // MESG_READ when the user clicks ok
  91.   virtual void MessageBox(char *mesg) = 0;
  92.  
  93.   ReadHandler **readHandlers;
  94.  
  95.   HandlerFunc Timers[3]; // upto three timer handlers
  96.  
  97.   void (*KeyPressed)(int event, int a, int b, char *data);
  98. };
  99.  
  100. #endif
  101.